Последние изменения - Поиск:

edit SideBar

Рефлексия

Модуль Modules

 
Modules.ThisModule(имяМодуля, VAR RESULT, VAR Msg : ARRAY OF CHAR)

Загружает модуль (возможны побочные эффекты!) и после этого доступна метаинформация.

Модуль Reflection

Модули TF*

Например, TFTypeSys.ReadSymbolFile

Узнать имя типа по ANY

MODULE Proba; IMPORT Commands, Modules, KernelLog;

TYPE u = POINTER TO RECORD a* : INTEGER; END;

PROCEDURE PrintTypeName*(context : Commands.Context);
VAR
   td : Modules.TypeDesc;
   mod : Modules.Module;
   pi : u;
BEGIN
   context := context;
   NEW(pi);
   td := Modules.TypeOf(pi);
   (** О надёжности определения модуля см. комментарий у определения Modules.TypeDesc.mod *)
   mod := td.mod;
   KernelLog.String(mod.name);
   KernelLog.String(".");
   KernelLog.String(Modules.TypeOf(pi).name);
   KernelLog.Ln; END PrintTypeName;

END Proba.PrintTypeName~
Править - История - Печать - Последние изменения - Поиск
Редакция от 16.11.2019 15:14